
// Header
#include <moose.h>

moose_list* moose_list_malloc()
{
    return (moose_list*)calloc(1, sizeof(moose_list));
}
void moose_list_free(moose_list* moose_list_ptr)
{
    free(moose_list_ptr);
    moose_list_ptr = NULL;
}

bool moose_list_push(moose_list* moose_list_ptr, void* data)
{
    moose_list* a_moose_list = moose_list_malloc();
    if (a_moose_list == NULL)
    {
        printf("[moose_list_push] a_moose_list == NULL.\n");
        return false;
    }

    a_moose_list->data = data;

    moose_list_get_last(moose_list_ptr)->next = a_moose_list;

    return true;
}

moose_list* moose_list_get_last(moose_list* moose_list_ptr)
{
    moose_list* a_moose_list = moose_list_ptr;
    if (a_moose_list == NULL)
    {
        printf("[moose_list_get_last] a_moose_list == NULL.\n");
        return NULL;
    }

    while ((a_moose_list != NULL) && (a_moose_list->next != NULL))
        a_moose_list = a_moose_list->next;

    return a_moose_list;
}
